from abc import ABC, abstractmethod

class IReader(ABC):
    @abstractmethod
    def get(self, index):
        pass
    @abstractmethod
    def get_range(self, start, end=None, step=1):
        pass
    @abstractmethod
    def peek(self):
        pass
    @abstractmethod
    def peek_or_raise(self):
        pass
    @abstractmethod
    def peekn(self, n=1):
        pass
    @abstractmethod
    def eat(self):
        pass
    @abstractmethod
    def eatn(self, n=1):
        pass
    @abstractmethod
    def next(self):
        pass
    @abstractmethod
    def next_or_raise(self):
        pass
    @abstractmethod
    def position(self):
        pass
    @abstractmethod
    def available(self):
        pass
    @abstractmethod
    def is_end(self):
        pass
    @abstractmethod
    def len(self):
        pass
